SPSS RECODE 简单教程
By Ruben Geert van den Berg under SPSS A-Z
简介
SPSS 的 RECODE
命令用于将数据值替换为不同的值。它在合并类别、二分连续变量和其他任务中非常有用。本教程将引导您了解其主要选项、最佳实践和注意事项。
SPSS Recode 示例 1
为了快速熟练地掌握 RECODE
命令,建议您跟着示例一起操作。您很快就会发现,从 语法 (syntax) 中进行重新编码非常简单,而且比从图形用户界面 (GUI) 操作快得多。所有示例都使用 supermarket.sav 数据集。
1. 合并一个变量的类别
在这个例子中,我们将合并变量 v1
的类别 1 和 2。我们将通过将所有值为 1 的值更改为 2 来实现这一点。这就像 recode v1 (1 = 2)
一样简单。截图说明了效果。所有 不是 1 的值都保持不变。我们将在重新编码前后运行 FREQUENCIES 命令,以便我们可以检查结果。
SPSS Recode 语法示例 1
***1. 在输出中获取值和值标签,并检查频率。
**
set tnumbers both.
freq v1.
***2. 重新编码 v1 并更正值标签。
**
recode v1 (1=2).
add value labels v1 2 'Not at all or a bit' 1 ''.
***3. 与之前的频率表进行检查。
**
freq v1.
请注意,在重新编码后,值标签不再正确。有关此的更多信息,请参见 SPSS Recode - 注意事项。因此,我们调整了 2 的值标签并删除了 1 的标签。
2. 二分多个变量
SPSS Recode 示例 2
我们将通过将值 1、2 和 3 更改为 0,并将值 4 和 5 更改为 1 来二分变量 v4
到 v6
,如 recode v4 to v6 (1,2,3 = 0)(4,5 = 1)
所示。值 6 保持不变。重新编码后,我们必须重新指定所有三个变量的值标签。在 don''t know
中需要 两个 引号的原因在 转义序列 (通用概念) 中进行了解释。
SPSS Recode 语法示例 2
***1. 检查频率。
**
freq v4 to v6.
***2. 重新编码并应用新的值标签。
**
recode v4 to v6 (1,2,3 = 0)(4,5 = 1).
value labels v4 to v6 0 'Bottom three' 1 'Top two' 6 'Don''t know'.
***3. 与之前的频率进行比较。
**
freq v4 to v6.
3. 将类别合并到新变量中
在前面的示例中,原始值被重新编码的值覆盖。另一种方法是创建一个新变量来保存重新编码的值。这可以通过使用 INTO
关键字来完成,例如 recode v2 (1=2) into rec_v2
。但是,如果 v2
__ 不是 1,这将不会告诉 rec_v2
应该保存哪些值,从而导致大量的 系统缺失值 (system missing values)。在这里,我们可以使用 ELSE
,这意味着 “所有先前未处理的值” 。为了将它们从 v2
复制到 rec_v2
中,我们将使用 (ELSE = COPY)
。
SPSS Recode 语法示例 3
***1. 将 v2 重新编码为 rec_v2。
**
recode v2 (1=2)(else=copy) into rec_v2.
***2. 将旧值与新值进行交叉分析作为检查。
**
crosstabs v2 by rec_v2 /cells count /missing include.
***注意:rec_v2 还没有定义标签或缺失值。**
交叉表确认类别 1 和 2 已合并为 2。
此示例显示了将重新编码到新变量中的一些缺点。首先,请注意,新变量根本没有任何字典信息。 其次,新变量会附加到活动数据集的末尾。 因此,您不能通过使用 TO ALL
关键字来处理一系列原始变量和重新编码的变量。但是,一种简单的 重新排序 的方法是使用 MATCH FILES。
4. 将多个变量二分到新变量中
将几个变量重新编码为几个新变量非常简单:只需在 RECODE
之后填写多个输入变量名,并在 INTO
之后填写多个输出变量名。只要确保输入变量的 **** 数量与输出变量的数量匹配即可。 此示例使用 LO THRU 3
,这意味着 “最低值到 3” 。类似地,HI
可以用于最高值。 可选地,安装了 SPSS Python Essentials 的用户可以在循环中生成交叉表,如步骤 3B 所示。
SPSS Recode 语法示例 4
***1. 检查频率。
**
freq v7 to v9.
***2. 重新编码。
**
recode v7 to v9 (lo thru 3 = 0)(4,5 = 1)(else = 2) into rec_v7 to rec_v9.
***3A. 检查原始值。
**
crosstabs v7 by rec_v7 /cells count /missing include.
crosstabs v8 by rec_v8 /cells count /missing include.
crosstabs v9 by rec_v9 /cells count /missing include.
***3B. 3A 的替代方法 - 让 Python 生成交叉表。
**
set mprint on.
begin program.
import spss
for suff in range(7,10):
spss.Submit('crosstabs v%(suff)d by rec_v%(suff)d /cells count /missing include.'%locals())
end program.
5. 将连续变量重新编码为离散变量
值只能由 RECODE
重新编码一次。旧值和新值对从左到右读取,如果旧值已被处理,则如果再次处理,它将被忽略。这也是在 ELSE
关键字之后指定任何旧值没有意义的原因。 此功能有时在离散化连续变量时使用:您可以将 LO
(尚未处理的 最低值)用作 每个 类别的下限。下面的语法看起来有点笨拙,但并不少见。如所证明的那样,按类别表进行的描述性统计是检查这些结果的好方法。最后,请注意,RANK 提供了离散化变量的替代方法。
SPSS Recode 语法示例 5
***1. 将收入重新编码为收入等级。
**
recode income (lo thru 2000 = 1)(lo thru 2500 = 2)(lo thru 3000 = 3)(lo thru 3500 = 4)(lo thru hi = 5) into income_class.
***2. 检查每个收入等级的收入描述性统计。
**
means income by income_class
/cells count min mean max.
6. 克隆一个变量
将重新编码到新变量中的一个缺点是默认情况下它们没有任何字典信息。但是,我们可以通过将 RECODE
与 APPLY DICTIONARY
结合使用来克隆 带有 其字典信息的变量。这基本上就是我们的 SPSS Clone Variables Tool 一次对多个变量所做的事情。该工具还会检查输入变量是否为 字符串变量 (string variables)。如果是,它会自动声明新的字符串变量,并具有重新编码所需的正确长度。 克隆后,我们可以安全地重新编码到相同的变量中,从而保持变量顺序不变,并最大限度地减少重新编码后对字典进行修改的需求。如有疑问,我们始终可以根据其克隆检查重新编码的变量,并在必要时删除它并从新的克隆重新开始。
SPSS Recode 语法示例 6
***1. 将值克隆到新变量中。
**
recode v10 (else = copy) into rec_v10.
***2. 将字典克隆到新变量上。
**
apply dictionary from * /source variables = v10 /target variables = rec_v10.
***3. 检查。
**
crosstabs v10 by rec_v10 /cells count /missing include.
7. 将字符串重新编码为数值变量
在某些情况下,您可能希望将 字符串 (string) 变量重新编码为数值变量。当您想在 等距假设 (Assumption of Equal Intervals) 下对有序变量进行计算时,尤其如此。请注意,我们不能在此处使用 AUTORECODE,因为我们不希望我们的值遵循字符串值的字母顺序。 请记住,您可以 一次将值标签 RECODE 并应用于多个变量 。不幸的是,将 变量标签 (variable labels) 从旧变量复制到新变量需要更多的工作,但这可以通过 Python 实现自动化(如果需要)。
SPSS Recode 语法示例 7
***1. 创建迷你数据集。
**
data list free / s1(a10).
begin data
'Very bad' 'Bad' 'Neutral' 'Good' 'Very good'
end data.
***2. 将字符串重新编码为数值变量。
**
recode s1 ('Very bad' = 1)('Bad' = 2) ('Neutral' = 3)('Good' = 4)('Very good' = 5) into n1.
exe.
***3. 应用值标签。
**
value labels n1 1 'Very bad' 2 'Bad' 3 'Neutral' 4 'Good' 5 'Very good'.
最终说明
本教程没有涵盖一些更特别的 RECODE
选项。原因是我们在实践中很少看到这些选项,并且我们不想比现在更深入地介绍。命令语法参考中涵盖了比此处描述的更多的选项。